package com.abl.javabasis._05_;


//        1.数学运算
//        2.字符串拼接
//        3.比较运算
//        4.逻辑运算
//        5. 位运算
//        6. 三元表达式

public class 逻辑运算 {


    public static void main(String[] args) {

        //左移 (<<) : 左移，左侧丢弃，右侧补0；
        //右移 (>>) : 右移，右侧丢弃，左侧补相同（原来是0就补0，原来是1就补1）；
        //无符号右移 (>>>) : 右移，右侧丢弃，左侧补0；

        // 0:false ; 1:true ;
        //与 (并且) (&) : 1&1时结果是1，否则是0;
        //或 (或者) (|) : 0|0时结果是0，否则是1;
        //异或 (不同) (^) :相同位 ^ 运算，结果是0；不同位 ^ 运算结果是1;
        //取反(~) : 正数取反，各二进制码按补码各位取反,负数取反，各二进制码按补码各位取反;

        // 十进制：[128/0]  [64/0]  [32/0]  [16/0]  [8/0]  [4/0]  [2/0]  [1/0]
        // 二进制： [1/0]    [1/0]   [1/0]   [1/0]  [1/0]  [1/0]  [1/0]  [1/0]

        //十进制 ： 二进制
        //  0:   0000 0000
        //  1:   0000 0001
        //  2:   0000 0010
        //  4:   0000 0100
        //  8:   0000 1000
        //  16:  0001 0000
        //  32:  0010 0000

        int a = 0;
        a = 8 << 2;
        System.out.println("8 << 2 ; 结果=" + a); // 32
        a = 8 >> 2;
        System.out.println("8 >> 2 ; 结果=" + a);// 2
        a = -8 >> 2;
        System.out.println("8 >> 2 ; 结果=" + a);// 2
        a = -8 >>> 2;
        System.out.println("8 >> 2 ; 结果=" + a);// 2

        a = 8 >>> 2;
        System.out.println("8 >>> 2 ; 结果=" + a);// 2
        a = 8 & 2;
        System.out.println("8 & 2 ; 结果=" + a); // 0
        a = 8 | 2;
        System.out.println("8 | 2 ; 结果=" + a);// 10
        a = 8 ^ 2;
        System.out.println("8 ^ 2 ; 结果=" + a);// 10
        a = ~8;
        System.out.println("~8 ; 结果=" + a);// -9


    }
}

//
//
//    public static void main(String[] args) {
//        boolean true_ = true;
//        boolean false_ = false;
//
//        System.out.println("^ ，表示两边不同结果为 true , 两边相同结果为 false");
//
//        System.out.println("true 异或 false ；  结果：" + (true_ ^ false_));//true
//        System.out.println("true 异或 true ；  结果：" + (true_ ^ true_));//false
//        System.out.println("false 异或 false ；  结果：" + (false_ ^ false_));//false
//
//    }

//
//    public static void main(String[] args) {
//        int a = 1;
//        int b = 2;
//
//        System.out.println("! ，表示 取反");
//        System.out.println("符号右边为 true,取反后结果为：false");
//        System.out.println("符号右边为 false,取反后结果为：true\n");
//
//        System.out.println("a=1 ; b=2 ;如下");
//        System.out.println("a 等于 b ；  结果：" + (a == b));//false
//        System.out.println("取反（a 等于 b） ；  结果：" + !(a == b));//true
//
//
//    }


//
//    public static void main(String[] args) {
//        boolean true_ = true;
//        boolean false_ = false;
//
//        System.out.println("| 与 || 的结果一致，都表示或者的关系，一边为 true 就为 true");
//        System.out.println("区别在于（| 两边都需要判断）、（|| 如果左边为true,右边就不需要判断了）");
//        System.out.println("true | false = " + (true_ | false_));//true
//        System.out.println("false | true = " + (false_ | true_));//true
//        System.out.println("true | true = " + (true_ | true_));//true
//        System.out.println("false | false = " + (false_ | false_));//false
//
//        System.out.println("true || false = " + (true_ || false_));//true
//        System.out.println("false || true = " + (false_ || true_));//true
//        System.out.println("true || true = " + (true_ || true_));//true
//        System.out.println("false || false = " + (false_ || false_));//false
//
//    }
//
//    public static void main(String[] args) {
//        boolean true_ = true;
//        boolean false_ = false;
//
//        System.out.println("& 与 && 的结果一致，都表示并且的关系，两边为 true 才为 true");
//        System.out.println("区别在于（& 两边都需要判断）、（&& 如果左边为false,右边就不需要判断了）");
//
//        System.out.println("true & false = " + (true_ & false_));//false
//        System.out.println("false & true = " + (false_ & true_));//false
//        System.out.println("true & true = " + (true_ & true_));//true
//        System.out.println("false & false = " + (false_ & false_));//false
//
//        System.out.println("true && false = " + (true_ && false_));//false
//        System.out.println("false && true = " + (false_ && true_));//false
//        System.out.println("true && true = " + (true_ && true_));//true
//        System.out.println("false && false = " + (false_ && false_));//false
//
//    }
//
//
//比较运算
//a大于b：false
//a小于b：true
//a等于b：false
//a大于等于b：false
//a小于等于b：true
//    public static void main(String[] args) {
//        int a = 10;
//        int b = 20;
//
//        System.out.println("a大于b：" + (a > b));
//        System.out.println("a小于b：" + (a < b));
//        System.out.println("a等于b：" + (a == b));
//        System.out.println("a大于等于b：" + (a >= b));
//        System.out.println("a小于等于b：" + (a <= b));
//
//    }
//    //
////    //1.数学运算
////    //正2 ：2
////    //负2 ：-2
////    //2加1 ：3
////    //2减1 ：1
////    //2乘1 ：2
////    //2除1 ：2
////    //2对1取模 ：0
//    public static void main(String[] args) {
//
//        int a = 0;
//
//        a = +2;
//        System.out.println("正2 ：" + a);
//
//        a = -2;
//        System.out.println("负2 ：" + a);
//
//        a = 2 + 1;
//        //     当a=2时，可以简写为     a += 1;
//        System.out.println("2加1 ：" + a);
//
//        a = 2 - 1;
//        //     当a=2时，可以简写为    a -= 1;
//        System.out.println("2减1 ：" + a);
//
//        a = 2 * 1;
//        //     当a=2时，可以简写为     a *= 1;
//        System.out.println("2乘1 ：" + a);
//
//        a = 2 / 1;
//        //     当a=2时，可以简写为    a /= 1;
//        System.out.println("2除1 ：" + a);
//
//        a = 2 % 1;
//        //     当a=2时，可以简写为   a %= 1;
//        System.out.println("2对1取模 ：" + a);
//
//
//    }

